/**
//输入一个整数数组，实现一个函数来调整该数组中数字的顺序，使得所有奇数在数组的前半部分，所有偶数在数组的后半部分。 
//
// 
//
// 示例： 
//
// 
//输入：nums = [1,2,3,4]
//输出：[1,3,2,4] 
//注：[3,1,2,4] 也是正确的答案之一。 
//
// 
//
// 提示： 
//
// 
// 0 <= nums.length <= 50000 
// 0 <= nums[i] <= 10000 
// 
// Related Topics 数组 双指针 排序 👍 223 👎 0

*/

package com.xixi.basicAlgroithms.sort;
public class ID_Offer_21_DiaoZhengShuZuShunXuShiQiShuWeiYuOuShuQianMianLcof {
public static void main(String[] args) {
Solution solution = new ID_Offer_21_DiaoZhengShuZuShunXuShiQiShuWeiYuOuShuQianMianLcof().new Solution();
}


//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
    public int[] exchange(int[] nums) {

        if (nums.length == 0) return nums;


        int front = 0;
        int tail = nums.length - 1;


        while(front < tail){
            if(nums[front]%2 != 0){ //前指针碰到偶数
                front++;
                continue; //前指针一直走，直到找到偶数

            }
            if((nums[tail] % 2) == 0){ //尾指针一直走，知道找到奇数
               tail--;
               continue;
            }

            //都找到了，就交换
            swap(nums,front, tail);

            front++;
            tail--;
        }



        return nums;


    }


    public void swap(int[] arr, int a, int b){
        int tmp = arr[a];
        arr[a] = arr[b];
        arr[b] = tmp;

    }
}
//leetcode submit region end(Prohibit modification and deletion)




}